package com.avocado.bt;

/**
 * @Author: zsh
 * @Date: 2023/10/16 10:20
 */
public interface IBTNode {

    BTState tick();

    void initialize(IBTContext context);

    default BTState update(IBTContext context) {
        BTState btState = doUpdate(context);
        setState(btState);
        return btState;
    }

    BTState doUpdate(IBTContext context);

    void terminate(IBTContext context);

    BTState getState();

    void setState(BTState state);

    String getNodeName();

    void setNodeName(String nodeName);

    IBTNode getParent();

    void setParent(IBTNode node);

    void setContent(IBTContext context);

    default void addChildNode(IBTNode node) {

    }

}
